#!usr/bin/env python  
#@time: 2018/01/22 
#任务进程
import time, sys, queue
from multiprocessing.managers import BaseManager

#创建类似的QueueManager
class QueueManager(BaseManager):
    pass

#由于这个QueueManager只从网络上获取Queue, 所以注册时只提供名字
QueueManager.register('send_task_queue')
QueueManager.register('receive_task_queue')

#连接到服务器, 也就是运行task_master的机器
server_addr = '127.0.0.1'
print('连接到 服务器 %s...' %server_addr)

#端口和验证码注意保持与task_master设置的完全一致
m = QueueManager(address=(server_addr, 5000),authkey='qwe123')
#从网络连接
m.connect()
#获取Queue的对象
send_task = m.send_task_queue()
result_task = m.receive_task_queue()

#从task队列中取任务，并把结果写入result队列:
for i in range(10):
    try:
        n = send_task.get(timeout = 1)
        print('运行任务 %d * %d...' %(n,n))
        r = '%d * %d = %d' %(n,n,n*n)
        time.sleep(1)
        result_task.put(r)
    except queue.Empty:
        print('任务队列为空...')

print('任务线程退出')